package com.expert.miniapp.service;

import com.expert.miniapp.dao.User;
import com.expert.miniapp.dto.LoginResponse;
import com.expert.miniapp.dto.UpdateProfileRequest;
import com.expert.miniapp.dto.UserDTO;

/**
 * UserService - 用户服务接口
 *
 * @author System
 * @since 2025-01-14
 */
public interface UserService {

    /**
     * 微信登录
     *
     * @param code 微信登录凭证
     * @return 登录响应（包含token和用户信息）
     * @throws Exception 登录失败时抛出异常
     */
    LoginResponse wechatLogin(String code) throws Exception;

    /**
     * 根据用户ID获取用户信息
     *
     * @param userId 用户ID
     * @return 用户DTO
     */
    UserDTO getUserById(String userId);

    /**
     * 更新用户信息
     *
     * @param userId 用户ID
     * @param request 更新请求
     * @return 更新后的用户DTO
     */
    UserDTO updateProfile(String userId, UpdateProfileRequest request);

    /**
     * 生成username
     * 格式：user_YYYY_MM_DD_XXX
     *
     * @return 生成的username
     */
    String generateUsername();
}
